package cn.com.csg.smartenergy.modules.biz.entity;

import cn.com.csg.smartenergy.modules.biz.validator.group.AddGroup;
import cn.com.csg.smartenergy.modules.biz.validator.group.UpdateGroup;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.Date;

/**
 * 产品_服务_属性
 *
 * @author Mark sunlightcs@gmail.com
 * @email anada_lee@163.com
 * @date 2019-07-30 08:24:20
 */
@Data
@TableName("iot_product_service_prop")
public class IotProductServicePropEntity implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * ID
     */
    @TableId
    private Long id;
    /**
     * 服务ID
     */
    @NotNull(message="服务ID不能为空", groups = {AddGroup.class})
    private Long serviceId;
    /**
     * 属性名称
     */
    @NotBlank(message="属性名称不能为空", groups = {AddGroup.class, UpdateGroup.class})
    @Size(min = 1, max = 30, message = "属性名称长度必须在1~30位", groups = {AddGroup.class, UpdateGroup.class})
    private String propertyName;
    /**
     * 数据类型：int 、 decimal (数字格式，范围±1.0x10^-28~±7.9x10^28) 、 string 、 DateTime (长日期格式,如: 20151212T121212Z) 、 jsonObject (自定义json结构体，平台不理解只透传)
     */
    @NotBlank(message="数据类型不能为空", groups = {AddGroup.class, UpdateGroup.class})
    private String dataType;
    /**
     * 是否必选 0：非必选 1：必选
     */
    @NotNull(message="是否必选不能为空", groups = {AddGroup.class, UpdateGroup.class})
    private Integer required;
    /**
     * 最小值(仅当dataType为int、decimal时生效，逻辑大于等于)
     */
    //@TableField(strategy = FieldStrategy.IGNORED)
    private String min;
    /**
     * 最大值(仅当dataType为int、decimal时生效，逻辑小于等于)
     */
    //@TableField(strategy = FieldStrategy.IGNORED)
    private String max;
    /**
     * 步长(暂不使用，填0即可)
     */
    //@TableField(strategy = FieldStrategy.IGNORED)
    private String step;
    /**
     * 长度
     */
    //@TableField(strategy = FieldStrategy.IGNORED)
    private String maxLength;
    /**
     * 访问模式(R属性值可读 W属性值可写(更改) E属性值更改时上报事件)
     */
    @NotBlank(message="访问模式不能为空", groups = {AddGroup.class, UpdateGroup.class})
    private String method;
    /**
     * 单位(英文)
     */
    //@TableField(strategy = FieldStrategy.IGNORED)
    private String unit;
    /**
     * 枚举值 (值之间以英文逗号分隔)
     */
    //@TableField(strategy = FieldStrategy.IGNORED)
    private String enumList;
    /**
     * 是否删除 -1：删除 0：保留
     */
    @TableLogic
    private Integer delFlag;
    /**
     * 创建时间
     */
    private Date createTime;
    /**
     * 创建人员ID
     */
    private Long createUser;
    /**
     * 更新时间
     */
    private Date updateTime;
    /**
     * 更新人员ID
     */
    private Long updateUser;

    /**
     * 服务的属性名称中文
     */
    @TableField(exist=false)
    private String propertyNameChinese;
    /**
     * 服务的属性名称中文
     */
    @TableField(exist=false)
    private String serviceName;

    @TableField(exist=false)
    private String dkey;

    @TableField(exist=false)
    private String fauflag;

    @TableField(exist=false)
    private String variableRatio;

    @TableField(exist=false)
    private String switchNum;

}
